home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / csfftm1du.z / csfftm1du
Text File  |  1996-03-14  |  9KB  |  199 lines

  1.  
  2.  
  3.  
  4. ccccssssffffffffttttmmmm1111dddduuuu,,,,zzzzddddffffffffttttmmmm1111dddduuuu((((3333FFFF))))                                ccccssssffffffffttttmmmm1111dddduuuu,,,,zzzzddddffffffffttttmmmm1111dddduuuu((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ccccssssffffffffttttmmmm1111dddduuuu,,,, zzzzddddffffffffttttmmmm1111dddduuuu ---- Multiple 1D, Complex to Real, Inverse Fast Fourier
  10.      Transforms.
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
  13.      _F_o_r_t_r_a_n :
  14.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ccccssssffffffffttttmmmm1111dddduuuu(((( ssssiiiiggggnnnn,,,, nnnn,,,, pppp,,,, aaaarrrrrrrraaaayyyy,,,, iiiinnnncccc,,,, llllddddaaaa,,,, ccccooooeeeeffff ))))
  15.           iiiinnnntttteeeeggggeeeerrrr            ssssiiiiggggnnnn,,,, nnnn,,,, pppp,,,, iiiinnnncccc,,,, llllddddaaaa
  16.           rrrreeeeaaaallll               aaaarrrrrrrraaaayyyy((((llllddddaaaa,,,,pppp)))),,,, ccccooooeeeeffff((((nnnn++++11115555))))
  17.  
  18.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee zzzzddddffffffffttttmmmm1111dddduuuu(((( ssssiiiiggggnnnn,,,, nnnn,,,, pppp,,,, aaaarrrrrrrraaaayyyy,,,, iiiinnnncccc,,,, llllddddaaaa,,,, ccccooooeeeeffff ))))
  19.           iiiinnnntttteeeeggggeeeerrrr            ssssiiiiggggnnnn,,,, nnnn,,,, pppp,,,, iiiinnnncccc,,,, llllddddaaaa
  20.           rrrreeeeaaaallll****8888             aaaarrrrrrrraaaayyyy((((llllddddaaaa,,,,pppp)))),,,, ccccooooeeeeffff((((nnnn++++11115555))))
  21.  
  22.  
  23.      _C :
  24.      ####iiiinnnncccclllluuuuddddeeee <<<<fffffffftttt....hhhh>>>>
  25.      iiiinnnntttt ccccssssffffffffttttmmmm1111dddduuuu (((( iiiinnnntttt ssssiiiiggggnnnn,,,, iiiinnnntttt nnnn,,,, iiiinnnntttt pppp,,,, ffffllllooooaaaatttt ****aaaarrrrrrrraaaayyyy,,,,
  26.                iiiinnnntttt iiiinnnncccc,,,, iiiinnnntttt llllddddaaaa,,,, ffffllllooooaaaatttt ****ccccooooeeeeffff))));;;;
  27.      iiiinnnntttt zzzzddddffffffffttttmmmm1111dddduuuu (((( iiiinnnntttt ssssiiiiggggnnnn,,,, iiiinnnntttt nnnn,,,, iiiinnnntttt pppp,,,, ddddoooouuuubbbblllleeee ****aaaarrrrrrrraaaayyyy,,,,
  28.                iiiinnnntttt iiiinnnncccc,,,, iiiinnnntttt llllddddaaaa,,,, ddddoooouuuubbbblllleeee ****ccccooooeeeeffff))));;;;
  29.  
  30.  
  31. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  32.      ccccssssffffffffttttmmmm1111dddduuuu and zzzzddddffffffffttttmmmm1111dddduuuu compute the P real sequences of N samples each,
  33.      from their Fourier transform. The i-th index f(i) of a sequence of N
  34.      samples, with Fourier transform F(k) is equal to:
  35.           f(i) = Sum ( W^(i*k) * F(k) ), for k =0, ..., (N-1)
  36.                W = exp( (Sign*2*sqrt(-1)*PI) / N )
  37.  
  38.  
  39.      The Inverse Fourier transforms are performed in-place, so the input
  40.      Fourier transform is overwritten by the final sequence output. As the
  41.      output sequences have real values, only the first half of the transform
  42.      is needed. The (N-k)-th sample of the transform would be the conjugate of
  43.      the k-th sample.
  44.  
  45.      However, some extra space is necessary. For an N sample output sequence,
  46.      the input complex transform takes ((N+2)/2) complex values.  This
  47.      represents either N+1(odd case) or N+2(even case) real values, that's one
  48.      or two more real values than the output real sequence.
  49.  
  50.  
  51. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  52.      SSSSIIIIGGGGNNNN Integer specifying which sign to be used for the expression of W
  53.      (see above) - must be either +1 or -1.  Unchanged on exit.
  54.  
  55.      NNNN Integer, the number of samples in each sequence.  Unchanged on exit.
  56.  
  57.      PPPP Integer, the number of sequences.  Unchanged on exit.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ccccssssffffffffttttmmmm1111dddduuuu,,,,zzzzddddffffffffttttmmmm1111dddduuuu((((3333FFFF))))                                ccccssssffffffffttttmmmm1111dddduuuu,,,,zzzzddddffffffffttttmmmm1111dddduuuu((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      AAAARRRRRRRRAAAAYYYY Array containing the samples of the sequence to be transformed.
  75.      On input, the element "i" of the sequence "j" is stored as A(i*inc,j) in
  76.      _F_o_r_t_r_a_n , and A[i*inc+j*lda] in _C.
  77.      On exit, the array is overwritten by its transform.
  78.  
  79.      IIIINNNNCCCC Integer, increment between two consecutive elements of a sequence.
  80.      Unchanged on exit.
  81.  
  82.      LLLLDDDDAAAA Integer, leading dimension: increment between the first samples of
  83.      two consecutive sequences.  Unchanged on exit.
  84.  
  85.      CCCCOOOOEEEEFFFFFFFF Array of at least ( N + 15 ) elements.  On entry it contains the
  86.      Sines/Cosines and factorization of N. COEFF needs to be initialized with
  87.      a call to scfftm1dui or dzfftm1dui.  Unchanged on exit.
  88.  
  89.  
  90. EEEExxxxaaaammmmpppplllleeee ooooffff CCCCaaaalllllllliiiinnnngggg SSSSeeeeqqqquuuueeeennnncccceeee
  91.      Working on 64 sequences of 1024 real values each.  We successively apply
  92.      a Direct Fourier Transform, an Inverse Fourier Trasnform and finally
  93.      scale back the result by a factor 1/N (1/1024.)-
  94.      This sequence DirectFFT-InverseFFT-Scaling is equivalent to the identity
  95.      operator and the final sequence should be equal (with round-off
  96.      precision) to the initial sequence.
  97.      Elements of each sequence are stored with increment (stride) 1, and the
  98.      offset between the first element of two succesive sequence (leading
  99.      dimension) is 1026 (1026 >= 1024+2).
  100.      _F_o_r_t_r_a_n
  101.           real array(0:1026-1,0:64-1), coeff(1024+15)
  102.           call csfftm1dui( 1024, coeff)
  103.           call csfftm1du( -1, 1024, 64, array, 1, 1026, coeff)
  104.           call scfftm1du(  1, 1024, 64, array, 1, 1026, coeff)
  105.           call sscalm1d( 1024,64,(1./real(1024)),array,1,1026)
  106.  
  107.      _C
  108.           #include <fft.h>
  109.           float array[64*1026], *coeff;
  110.           coeff = csfftm1dui( 1024, NULL);
  111.           csfftm1du( -1, 1024, 64, array, 1, 1026, coeff);
  112.           csfftm1du(  1, 1024, 64, array, 1, 1026, coeff);
  113.           sscalm1d( 1024, 64, 1./(float)1024, array, 1, 1026);
  114.  
  115.      NNNNOOOOTTTTEEEE____1111 :::: The Direct and Inverse transforms should use opposite signs -
  116.      Which one is used (+1 or -1) for Direct transform is just a matter of
  117.      convention-
  118.  
  119.      NNNNOOOOTTTTEEEE____2222 :::: The Fourier Transforms are not normalized so the succession
  120.      Direct-Inverse transform scales the input data by a factor equal to the
  121.      size of the transform.
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ccccssssffffffffttttmmmm1111dddduuuu,,,,zzzzddddffffffffttttmmmm1111dddduuuu((((3333FFFF))))                                ccccssssffffffffttttmmmm1111dddduuuu,,,,zzzzddddffffffffttttmmmm1111dddduuuu((((3333FFFF))))
  137.  
  138.  
  139.  
  140. SEE ALSO
  141.      fft, csfftm1dui, zdfftm1dui, scfftm1du, dzfftm1du, csfftm1du, zdfftm1du,
  142.      sscalm1d, dscalm1d
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.